package cn.itsource.basic.util;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 前后端交互的统一对象
 */
@Data
@AllArgsConstructor   //全参构造
@NoArgsConstructor    //无参构造
@ApiModel(value = "前后端交互的统一对象")
public class AjaxResult {

    //返回的状态码
    @ApiModelProperty(value = "返回的状态码 \"0000\":成功 \"1000\":系统异常  '1001':登录超时")
    private String code = PetConstant.SYSTEM_SUCCESS;
    //是否成功的主状态
    @ApiModelProperty(value ="成功失败状态")
    private Boolean success = true;
    //提示信息
    @ApiModelProperty(value ="提示信息")
    private String message = "操作成功";
    //携带数据的载体
    @ApiModelProperty(value ="数据")
    private Object data;

    /**
     * 返回成功，不携带数据
     */
    public static AjaxResult createSuccess(){
        return new AjaxResult();
    }

    /**
     * 返回成功，携带数据
     */
    public static AjaxResult createSuccess(Object data){
        return new AjaxResult(PetConstant.SYSTEM_SUCCESS,true,"成功",data);
    }

    /**
     * 返回错误
     */
    public static AjaxResult createError(String code ,String message){
        return new AjaxResult(code,false,message,null);
    }

    /**
     * 返回默认的系统错误
     * 方法调用
     */
    public static AjaxResult createError(String message){
        return new AjaxResult(PetConstant.SYSTEM_ERROR,false,message,null);
    }
    /**
     * 返回默认的系统错误，不用参数
     * 方法调用
     */
    public static AjaxResult createError(){
        return new AjaxResult(PetConstant.SYSTEM_ERROR,false,"系统异常",null);
    }

}
